1. Field of the Invention
This invention relates to system initialization and more particularly to describing and configuring computing system fabric and routing.
2. Description of the Related Art
Computing systems are information handling systems which are designed to give independent computing power to one or more users. Computing systems can be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, internet terminals, notebooks and embedded systems. Personal computer (PC) systems include desk top, floor standing, or portable versions. A typical PC system is a microcomputer that includes a microprocessor, associated memory and control logic (typically on a system board) and a number of peripheral devices that provide input and/or output (I/O) for the system. PC system boards often receive expansion PCBs to increase the capabilities of the computer system and to connect to peripheral devices through an expansion bus. For example, various multimedia devices are commonly implemented as add-in cards in desktop and portable computers or as integrated circuits for installation on a system board.
Computing systems typically include a set of built-in software routines called the basic input/output system (BIOS). The BIOS is a software interface between the system hardware and the operating system software. The BIOS facilitates programmer and user interaction with the system hardware. Because the BIOS has qualities of software and hardware, it is often referred to as firmware. The BIOS is a set of instructions to the computer's microprocessor. The BIOS is commonly coded using, for example, assembly language, and stored onto a non-volatile memory such as a ROM (Read Only Memory) or a PROM (Programmable ROM) such as an EPROM (Erasable PROM), an EEPROM (Electrically Erasable PROM), a flash RAM (Random Access Memory) or any other type of memory appropriate for storing BIOS.
The BIOS controls several important functions of personal computer systems. For instance, the BIOS performs various functions at power up, including testing and initializing memory, inventorying and initializing the system, and testing the system. These functions at power up are referred to as “system boot” or “booting the system” and can occur every time the system powers up or is reset. The BIOS also controls keystroke interpretation, display of characters, and communication via the PC ports. The operating system and application programs of a computer system access the BIOS rather than directly manipulating I/O ports, registers and control words of the specific system hardware. BIOS can be accessed through an interface of software interrupts and contains a plurality of entry points respectively corresponding to the different interrupts.
The BIOS code written by BIOS programmer(s) is compiled prior to storage in non-volatile memory on a computer system during what is referred to as BIOS build time. BIOS build time produces an executable program that is capable of booting the computer system. Therefore, BIOS is often specifically tailored to the architecture of the computer system. When BIOS is executed, referred to as BIOS run time, BIOS performs the necessary system configurations such as initializing any hardware, communication links, and the like.
FIGS. 1A-1B illustrate exemplary prior art computing system architectures. FIG. 1A illustrates an exemplary prior art single processor computing system architecture 100. BIOS executes on processor 102, referred to as the boot strap processor, to boot the computing system. Processor 102 can be any type of processor with any architecture, for example, a single scalar, a superscalar or a VLIW processor. As illustrated, processor 102 communicates through north bridge 104 to memory array 106. North bridge 104 includes a memory controller and one or more bridges to other devices. North bridge 104 communicates with one or more south bridges 108 on a standard bus 109, for example, a peripheral component interconnect (PCI) bus. South bridge 108 communicates to one or more input/output (I/O) devices 110 on another standard bus 111, for example, an ISA bus. Additional devices (not shown) can be attached to standard buses 109 and 111.
FIG. 1B illustrates an exemplary prior art multiprocessor computing system architecture 150. Architecture 150 is similar to architecture 100, except that multiple processors 152 communicate through a north bridge 154. Multiple processors 152 can share a common bus (not shown) to north bridge 154 or have individual communication paths as shown. Multiple processors 152 access memory array 106 through a memory controller in north bridge 154. One of the processors 152 is designated as the boot strap processor and executes the BIOS to boot the computing system. During the boot process, the other processors 152 are inactive, for example, under a halt condition.
BIOS configuration of prior art system architectures such as architectures 100 and 150 include testing and initializing memory, inventorying and initializing the system, and testing the system. Such architectures have predefined communication paths between the processor(s), memory, bridges, peripheral devices, and system busses. BIOS is tailored to each system architecture during BIOS build time and thus simply writes configuration information as needed to any configuration registers during BIOS run time. BIOS for system architecture 100 typically must be re-written or modified for system architecture 150. Thus many different BIOS programs must be written and maintained, one for each different architecture, system board, and population option. However, here, BIOS is used to initialize hardware components on the motherboard and requires minimal development resource because of the low complexity of the hardware. Platform and silicon requirements are communicated to the BIOS developers. The BIOS developers customize the BIOS for the silicon and motherboard.
As technology evolves and the hardware complexity increases, providing a different BIOS for each different platform implementation is undesirable. The BIOS implementation of different platform implementations takes significant development time and resources and increases the risk of error. In addition, computing system platforms now include multiple devices that are fully programmable and need to be fully configured by BIOS. For example, a device can include multiple interface ports which can be physically connected to multiple devices in a variety of ways. BIOS must configure the devices to communicate to its neighbors, as well as determining routing patterns for efficient traffic flow. BIOS needs to become more intelligent to handle the complexity of today's computing systems while remaining flexible such that a single BIOS can support multiple computing system platform implementations.